Wireless communication devices, such as wireless telephones, PDA's and other similar devices are increasingly important communication tools used by individuals, families and businesses. The features and functions of these wireless communication devices have increased rapidly in recent years, requiring ever increasing technical sophistication. At the same, interoperability requirements have increased the need for technical flexibility in these devices. For all these reasons, modem wireless communication devices typically require significant amounts of programming to provide the desired features and functions that consumers have grown to expect.
For example, in many wireless communication devices a first phase of programming is performed when the device is manufactured. This typically provides the base features and data that are common to devices of that type. A second round of programming may be then be used to provide a set of regional or customer specific requirements, features, security and distribution provision. For example, specialized programming may be used to adapt the wireless communication device for use in different carrier networks.
In some cases it is desirable to update the programming of existing wireless communication devices that are already in the hands of customers. For example, to add new features previously unavailable or to repair programming errors in the device. In each case, it is desirable to provide these updates in a convenient yet reliable manner. Most previous techniques have relied on direct physical connection to reprogram the device, e.g., plugging the device into a network that provides the reprogramming. This technique provides high levels of functionality, but can be unacceptably inconvenient for consumers that do not have ready access to the needed to hardware.
Other update methods have used over-the-air programming techniques. These techniques have provided the ability to update programming using wireless communication to the device. For example, a phone can be updating using the phone's inherent wireless communication ability. These techniques provide a convenient method for updating the device, because it can typically be accomplished while the device remains in the hands of the consumer. Unfortunately, previous techniques for over-the-air programming have had limited functionality. Specifically, they have been limited in the types of reprogramming that can be performed, and have thus been unable to update all aspects of wireless communication device programming.
As one specific example, some current techniques for over-the-air programming have been limited to updating direct addressable portions of device firmware. Specifically, some techniques for over-the-air updating have required all code that is being updated to reside in known address locations on the device. For example, some techniques use a differencing process that uses the known physical address locations and a comparison to the desired updated code to generate a code update, which can then be delivered to the communication device. This technique thus provides the ability to update areas of memory that have a known memory addressing structure, but they cannot be used to update other areas of the firmware where the memory address structure is not precisely known. Thus, they have been unable to provide over-the-air updates to all portions of the communication device firmware such as those portions that are not directly addressable.
Thus, what is needed is an improved system and method for over-the-air updating of wireless communication devices that provides the ability to update non-direct addressable portions of firmware in the device.